# coding:utf-8
#本程序按照用户输入统计指定文本的指定词汇的出现频率
#并产生html文件
#以词云的形式输出
#肥肥兔  2015.8.10


import random

words=[]#存放词汇
x=None

def Summary(string,words):#在字符串string内统计word列表中的词汇出现频率
	dictionary=dict()
	for word in words:
	#创建字典
		dictionary[word]=0
		begin= string.find(word)#开始找的位置
		while begin != -1:#找到
			dictionary[word]+=1
			begin=string.find(word,begin+1)#从下一个开始找
	return dictionary


def BuildHtml(dictionary,fn):
	#fn为默认路径,返回fn作为地址在主函数显示
	#先对dictionary的内容求小数
	Char_sum=sum(dictionary.values())
	#Char_size=Char_sum*5#网页中显示的字符总大小
	dictionary2=dict()
	for (x,y) in dictionary.items():
		dictionary2[x]=round((y/Char_sum),2)#round函数保留小数点几位
	#写入html文件
	with open(fn,'w') as fp:
		fp.write("<div style='float:left;margin:200px,400px;width:100%;background:black;font-size:220%;'>")
		for (x,y) in dictionary2.items():
			if y != 0:
				color = random.randint(1,50)%4
				if color == 0:#第一种颜色红色
					fp.write('<div style="font-size:'+str(y*5000)+'%;color:red;float:left;">'+x+'&nbsp;</div>')
				elif color == 1:#第二种颜色橙色
					fp.write('<div style="font-size:'+str(y*5000)+'%;color:orange;float:left;">'+x+'&nbsp;</div>')
				elif color == 2:#第二种颜色橙色
					fp.write('<div style="font-size:'+str(y*5000)+'%;color:gray;float:left;">'+x+'&nbsp;</div>')
				else:
					fp.write('<div style="font-size:'+str(y*5000)+'%;color:yellow;float:left;">'+x+'&nbsp;</div>')			
	return fn

def OpenTxt(fn):
	#fn是默认路径
	try:
		return open(fn,'r').read().upper()#返回字符串，统一大写
	except Exception as e:
		print("error"+str(e))
	

if __name__ == '__main__':
	s=OpenTxt("newlib.txt")#用来装匹配的词的文件
	s=s.replace('，',',').replace(' ','').replace('\n','')#替换中文逗号，空格，换行符
	words=s.split(',')

	if "" in words:#褪去列表最后一个空格
		words.pop()

	filename = input('filename:')#"java.txt"#需要分析的文件名
	try:
		string=OpenTxt(filename)
		d=Summary(string,words)
		filename = filename.replace('.txt','.html')
		address=BuildHtml(d,filename)
		print("分析地址存放在"+address+"请查看~")
	except:
		print('打开文件错误')
	#input('end')
	